package BehaviorModel.chainOfResponsibilityModel;

/**
 * 功能描述: 责任链模式 - 测试类
 * 2024/02/21
 * <p>
 * ZhangYi
 */
public class chainOfResponsibilityModelTest {
    public static void main(String[] args){
        PurseRequest purseRequest = new PurseRequest("1",
                                                     3000.0f,
                                                     1);

        Handler departmentHandler = new DepartmentHandler("张部长");
        Handler managerHandler = new ManagerHandler("李经理");
        Handler vicePresidentHandler = new VicePresidentHandler("赵副董事");
        Handler presidentHandler = new PresidentHandler("王董事");

        departmentHandler.setNextHandler(managerHandler); // 部门负责人的 下一处理人设置为经理
        managerHandler.setNextHandler(vicePresidentHandler); // 经理的 下一处理人设置为 副董事
        vicePresidentHandler.setNextHandler(presidentHandler); // 副董事的 下一处理人设置为 董事长
        // 设置责任链 为一个闭环,  这里处理器 形成 闭环, 可以避免一个 空指针  Exception in thread "main" java.lang.NullPointerException
        presidentHandler.setNextHandler(departmentHandler);  // 董事长 的下一处理人设置为 部门负责人

        presidentHandler.handleRequest(purseRequest);
    }
}
